.386
.model flat,stdcall
option casemap:none
include msvcrt.inc
includelib msvcrt.lib
printf  proto C:dword,:dword
.data
lb_write_int db '%d',0
lb_writeln_int db '%d',0ah,0dh,0
lb_write_real db '%lf',0
lb_writeln_real db '%lf',0ah,0dh,0
lb_tmp db 0, 0, 0, 0, 0, 0, 0, 0
lb_read_int db '%d',0
lb_read_real db '%f',0
_REAL_DATA_0 dd 2.500000
_REAL_DATA_1 dd 20.600000

.code
main PROC
mov ecx, esp
sub esp, 28
mov eax, 0
push eax
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
mov eax, _REAL_DATA_0
push eax
mov edi, -12
mov esi, ecx
add esi, edi
mov eax, dword ptr [esi]; calculate ExpId(type: real)
pop eax
mov [esi-0], eax
mov eax, 0
push eax
mov edi, -16
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
mov eax, 12
push eax
mov edi, -20
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
mov eax, 0
push eax
mov eax, 0
mov ebx, 0
sub eax, ebx
mov ebx, 4
imul eax,ebx
mov edi, -24
add edi, eax
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
mov eax, 0
push eax
mov edi, -28
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
mov eax, _REAL_DATA_1
push eax
mov edi, -24
mov esi, ecx
add esi, edi
mov eax, dword ptr [esi]; calculate ExpId(type: real)
pop eax
mov [esi-0], eax
add esp, 28
ret
main ENDP
END main

